home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c++-part2 / 15276 < prev    next >
Encoding:
Internet Message Format  |  1996-08-05  |  30.3 KB

  1. Path: morgan.com!usenet
  2. From: Chris Laffra <laffra@ms.com>
  3. Newsgroups: comp.lang.java,comp.lang.c++
  4. Subject: FREE: C++ to Java translator
  5. Date: Thu, 04 Apr 1996 11:27:32 -0500
  6. Organization: Morgan Stanley
  7. Message-ID: <3163F874.595C@ms.com>
  8. NNTP-Posting-Host: cal.morgan.com
  9. Mime-Version: 1.0
  10. Content-Type: text/plain; charset=us-ascii
  11. Content-Transfer-Encoding: 7bit
  12. X-Mailer: Mozilla 2.0 (X11; I; SunOS 5.4 sun4m)
  13.  
  14. c2j is a C++ to Java translator that translates C++ code to Java code.
  15. The parser is written in C++, because I wrote it before I ever heard of Java...
  16. The input to c2j must consist of:
  17.  
  18.    - one .H file, containing one or more C++ class definitions.
  19.    - one .C file, containing all method bodies referenced in the .H file.
  20.  
  21. c2j is basically a shell-script that calls sed, a C++-to-Java translator,
  22. and the C pre-processor to do all the weaving of moving methods into one
  23. Java class definition.
  24.  
  25. This parser currently uses a shell script and a Unix utility called "sed".
  26. When you have access to Unix utilities on a Windows PC (like the MKS
  27. toolkit), the parser could also be used. However, that setup has not been
  28. tested, as I did not have a strong incentive to do this because we have
  29. plenty Unix machines available at Morgan Stanley.
  30.  
  31. It should be pretty simple to make this thing work on DOS-only tools.
  32. If someone does this, please let me know.
  33.  
  34. Different problems that are tackled by this parser:
  35.  
  36.    - C++ can have a header file with a class declaration and a member
  37.      function given in another file (typically a .C or .cpp file),
  38.      Java has all the methods "inlined" in the class definition.
  39.  
  40.    - Data types are incompatible (unsigned versus int, for instance)
  41.  
  42.    - Pointer references (->) need to be translated into refs (.)
  43.  
  44.    - Access (public,protected,private) is done by region in C++, and
  45.      is per method in Java.
  46.  
  47.    - Print statements to cerr and cout, which are to be translated into
  48.      calls to System.out.print, and System.err.print.
  49.  
  50.    - Statements with "delete object;" need to be translated into
  51.      "object = null;" to render a similar effect. Note that these
  52.      assignments are not necessary at all in a destructor, as we will
  53.      lose the reference to the object automatically.
  54.  
  55.    - Overloaded operators in a class definition are meaningless in Java.
  56.  
  57.    - C++ has multiple inheritance. Java has single inheritance and
  58.      interfaces. In the case of multiple inheritance, we need to make
  59.      a decision.
  60.  
  61. Still to be done:
  62.  
  63.    - Variable declarations on the stack are not recognized and handled.
  64.  
  65.    - Overloaded operators in the code.
  66.  
  67.    - Templates.
  68.  
  69.    - Global variables are collected and put into the first class found
  70.      in the .H file. Something goes wrong during collection or writing,
  71.      and this class might not be the right location after all.
  72.  
  73.    - Sometimes the parser has problems with method parameters 
  74.      (especially with constructors). Keep the .H and .C file handy...
  75.  
  76.    - Documentation (no time...)
  77.  
  78.  
  79. C2j translates roughly about 85-95 percent of the code correctly. It saves
  80. me a lot of editing time (inlining all methods, translating simple types,
  81. removing &'s everywhere, changing -> into ., etc.
  82. Just run it and see what it does for you...
  83.  
  84. We have decided to put this parser in the public domain. Use it at your
  85. own risk, and if you make any changes (especially improvements), tell us!
  86. We hope that this utility is useful for you and the rest of the C++/Java
  87. community.
  88.  
  89. Sorry for sending code like this, but we do not have a publicly accessible 
  90. site for depositing source code.
  91.  
  92. Chris Laffra
  93. -------------------------------------------------------------------
  94. Morgan Stanley, 750 Seventh Avenue (between 49 & 50), NYC, NY 10019
  95. Email: laffra@ms.com,   Tel: (212) 762 2223,    Fax: (212) 762 0520
  96. -------------------------------------------------------------------
  97.  
  98. Save this posting in a file, and run uudecode on that file, 
  99. then execute:
  100.  
  101.         uncompress c2j.tar.Z
  102.         tar xvf c2j.tar
  103.         cd c2j
  104.         make
  105.  
  106. The makefile uses the Lucid compiler, replace it with any other
  107. C++ compiler you use.
  108.  
  109. begin 664 c2j.tar.Z
  110. M'YV08V2H>0&@H,&#"!,J7,BPH<.'$!'"@$$#QHT;-0!,A"'C1HP;&C?&H$$C
  111. MY,:3$S7:B#'#HHT:'T%.C"%C1@V0&2/JW,FSI\\Z<^B$D1.231@S9N2$\:FP
  112. MS1LY9\*X89H094JK,:AJW<JUJ]>O 0<V";.FC)DT;,I\7<OV((P8$VV0--GQ
  113. MH\FW<ZURM"E#)4N7-6;,D(GW;5\8;1,K5@A4*-&)1I$J]>H4JE2O>N_.7,RY
  114. ML^>V(T*+'DVZM.G3J%.K7JU@1&L0(,+"GDT;1 X;+RCFIC%["!HY:>: 8'(T
  115. M:9C6KT$,>0,G#_ S:.B 0#$F!8@8.7+4:(']-H@F3Z.Z 3%%J)NT>4"84/[&
  116. M!0L02=R,<0$B"!LV(*2D@4Y'N)0R<Y0AAQUED.$"<B/ !H6 ;00W1QIOC$?'
  117. M&R  5<9[8S"7QWM.D9&&&1N"(!49('@8%'!BU$%'&2#0@49P(,SQAAETW#%4
  118. M&<F-"$(:_97XQAAUM%&&&T+1 >%X9CP%@A-/.-'"$$\TT4014@R11!!,@ !'
  119. M'7+ \4: PNEX!X]HO*%B<F:4P2*,: A8AACIG:$4D05J*<<;=J1!1ITNAB&=
  120. MBS!FV-QST8'@QAM&CH%C@B+" 4<90PF7QGAAW!<;<VD 2!\4:841X*5$AC&&
  121. M=&6T$09:.H 0F7% M#&'"QFV@::29G#IHH"7#KI?H3JRD8:B;CSHQAD[NI&D
  122. M'*8:&>&!KC':Q!-2'!&$$^11,2T3163Q71!+%#'%DD_D5P044GA;A!/64I%$
  123. MD]]""\(504@AQ;3J>EN?$$]4004(5"!1!'E5)&&M$$DP(7 6R3UA!+]()/'M
  124. M% I3 6^Y[Q4AL+]2@% $%N1ZVV[&230!A<%%$/%>$DX,P4051*!\! A"Z ON
  125. MO@8W(7#)R5$1;K__ACQR$B6_&^^\Z +=[L)35HD$O4$0;# 56;QGA,!.> R"
  126. M$>X&D1P4\:H[1!5,Q L"%%5( <434Q3QGKM,.HFR$5*X7,24Z-+W;+335GMM
  127. MMN0MS4263.XKQ+\&-XUM<EAG/*VV1 311!!'V#M%%48806700FAK\!#GIOUO
  128. M$-\&(>[D3.RK, A53.'R>\^V;$06+H, ;7(M3T%%W#&KZ\3+_3I,7L03_^NN
  129. MP-\206425@2AKA7>,KMUIY_*81:N$[;8IKA!$#$E"&>EY?QJX(<O_OBG(=@B
  130. M@"N2.*:+P]4QAIZ7M@$'6KA&R$:(<Y19!QOJ/[4&".M#@XC<D!Y$M4D.UC,3
  131. M=%S 0 21[X$0C*!H%*  .$1*0*FRH!P") <7#$$!"6##&,8 @A902(,<+"&Q
  132. M4"@@#X)0-BR4@P(^0\,:VO"&.+QA6%Y0KNQ-*8= -,A;XI*7B=2%,#,IXDG@
  133. M$H.5^*4E-WA)2P[SEAG(P"Z(":(6%]*8H12E.)/I2F7$@QFK:.8M6TRC&KDB
  134. MP3:Z4344#,M[;(,;W5!DCKX!CG"((YGC*& YNN+/=*ISG>QLISLV^$YXI$(>
  135. M\Z!'/>QQ#WSD0Q_[X$<__/$/@ 1$( -1<$'(<M"16D0A"V%(0QQZ@X= ]!X=
  136. MF8@.*%(1BP E'!G1R$;24X".>"0<,OPH2$,JTBB/!2XG04E*5+(2EK3$)2^!
  137. M:8#J(Y.9Z*" -*U). =\4YSFE#X[X4E/?$*#GZP7* T12CJ'2A2.PN H2&VP
  138. M6"*RE* R]:JQ08]%&0K5J$!0JE.Q(56K4DJK7A6K:M+*5@?,E7-V)9U>_6I(
  139. MPB+6I(Z5K",=2 %WDQ:U;+<W;3VN6]]BDK@ZEC9T*6]=3OB8T.1%+Z/=*U_[
  140. MXAG !-:T@AU, :?KW<. %R^U:>QB5-(8Q\HU!97ZC&0F@T_*5M:RW<%,9H$;
  141. M3LAN1@0%Z(QA/1,94E=*M'H=[3O)7)I)G78PJ5'-:HFKCP*X)@6O@4UL9#,;
  142. MVGS*MB:UX&UQV]W<SD4%NT%+HWIS K:T-06_ >X)@B/<E81PN+0N#@2->USD
  143. M'D8YRY6+"##37!(XE](B?"YTHP.;Z1:6NM5]YPFN@YU39U>[VR4A=['3Z>^,
  144. M(+&>R@YD5"C>\9*WO.91\(W #6YHXBB0'85).2M8 2E!H(0PV"$,+9K3'(PR
  145. M(03VZ4_2I2Z D*O<#.UIN<U][J7V=" J7&]26Y).&QH#J@<%!00ST@$%9],"
  146. M^+J!12Y  O?H=\I036I2Q(H0BY14&18-(;FQ,<H<>FF6_RHK6 >BKWWQ.X3]
  147. MIJ6_0OGOL.*)'R&Y2)4@$(,JZ0D"Z:5)>O*ITZ2LAU_]=J\,%Y4-C,3@J5]5
  148. MZGXBBE&;[M.".8P!.'#XDSBE,X8;U[) K>1N"R;4@O!"%Y92F:Z?GL("7;J!
  149. M1+=2CIW*T (XW$E1"U92]7S)818#$%)YVO",0."4-!/+PV4B@Z2(1"$!*\#)
  150. M"?84@\_B!AY9E(+FA5$,8\,E%-,!QQ8Z;O[*8"D? [FA5\YQ%?J,APH9R5=T
  151. M2$^1[U,G$02(#"(XT!7:-)X\F D$XB20B$8((.%4;])IJ+2*T.+G[48HQU>8
  152. ME"_O(!PH5!@%OBJ+F9NPA"DH8$)O8,,:>)2"]V1YT!G:'XDJ):,0L\A"!@(!
  153. M$MYPAS(02 [.'G*,RD"'.L !U9XR%**L/:1CHP_)(A).$DH$OW2B6]70/5&$
  154. M))IB(J5!U6.F$"VM760+G?G>.()#6HB4'EA7VE1C>-%]P_1<M(1!#&D1D73 
  155. M8YGQE$<JZ+EH$J23/S/QS]I;ID.F8Y0&^66\>J82]L !M>$[^,^^D$6;"<^3
  156. M'F2SH9X*2((98O0&(0G81]NEY7L4#JE/I46]+%K#H>YP4040X4,G#J8W,5XJ
  157. M5XO[1BT2U1K20B(XD5,X,92O B1\X.XR,M4L@FZ;PK G!+X8@&3*\1@4S."]
  158. M#\5/H]01=(74!C$(:.VTJ95\'@R",_Q[2/"4B@%Q=7<49'I^F\8Q=#T(7P3"
  159. MRE$6+D.S$3\;/(LS3);*,IQ5*1P13,I7]P4U/+/L]P67J,%]?C!]Y@N;^A+!
  160. M3T_.PZ/")+UBQ<J"1N+Z=.H0K/W$'@3?G@-0BD6']Q!S4D&1BJ)2P/L2CNT-
  161. MDUH1 DWLIA0+!P4M\(%U[LLG"AD^NE'6+HG"3R$3G]\%W"=]?8/ :MNC8$L8
  162. M]RLLX&6(4@:C@F1>]F]^(GK&Y2/W%6+I(3V.=VLKUG:M=&6D!QN"ABNK-W_C
  163. MX607)6%0 !Q$$B-%4BK!Y&H4HBAR@$ Z$FW5!T O$G$B4GS5\WY0%BSR1WT4
  164. MDH&Q863+-05Y$!2EX@+3Y ()2"072")"2(1MX ("TD%)2 <AV'N-M(!"0B3"
  165. M$4 @( )[\G0#)@9J8(!TL ,B8"AJ@F7N-TO9M8 >."$^* )O((9D" (]8"C[
  166. MPP9FN%PH5G<Y]B -8A0(9!9I,BKTX00%:#WC="N?XH-ZYGQ9V"-@9V_W!69S
  167. M,!3I,4XW%GFW=R+N4UVMM(4L,B;WX8-L\"6S=#WDAV**LEQ9-H=CN$]AH")%
  168. M!WB9EP=5Z'U/\&VG2'=UPAP",F7OM&+057M[YF"!5WQ"(A4 EA:VMV(@Z(/Z
  169. MQUWH)ASKQ09&PG3%<D \HGTPQES.)7?I%E$9-RG<:!ZM."(^&'X"8@:BHBF3
  170. M9&9%]BEK=HW96(YN<([>^![=AH;MQV9D@2.U 5U[\CX/LBP45!YH@1\WR"*^
  171. M=%]J)V%6,!1I<'$95Y"""'@1(ARWEF79-P;_,XGK)CT9<@9]I@=UHB/B=&5D
  172. MEXOUM8L"THM[0B+ J!35-6?RJ$K?V'WU106EHG +^"H\"0)'<(HTAA_/!1P6
  173. MN5U@ER&<=H#3%FGIQ8-F=A8;1&1\QSUF@H&UL6)9EE^A1Q]34'3D)G'$<@9O
  174. ML%UW<"<;1@9< F"7\I2,IR1KZ6?#4F4#&6D#9XQLQE#J)ATXJ(I^>8I%QGA'
  175. M(7X<YI+D099&(B1>QR*#=GI;EQ:N@G?LTX%:\G<>)B#G!R"/\CXWE@<^R(7Y
  176. MY(FC\A0I0!]+H";G]I7ZI2.<=W<K20:XV$#32 2_%(D:.1XH<"@MTG(PQD#Y
  177. M-W+PIX-!66(*A ::)V(J @(XL!W:H24" BS2L6:TIY.7TH)D>#_T09R72"!S
  178. MH !"DF.G6)U#5R!V22R-R2(H\'H:1BR;V(%SX&QM:"0;!HC:>'D 4F72TV9P
  179. M:0(G(!S>)B!Y< ?9A"$KZ7@;EGY4*4GD-A\@<&?L)0?,MR.01B(!,HKBQB-(
  180. M)QS$9&IUP$ 7=04L G>W]SXSN5Q3.7"#YI77 X"^0D*^9"J30A]5\"D<.DX@
  181. M*D/<-AYZM 9+N"-#!Z( *6Q2H6D)NETHX)D&6)'WD1XM1X $$HEST&SG8RE 
  182. M$0(41**H!HR**&0P,FN8!J7"82&U@A\?>FHZDF72\U[6>3U.I@"QLEZYAXL4
  183. ME$<PPD?&H0 MT*=^^J> &JB".JB$6JB&V@(8M4@>YTAE$"(8 0/D,:!$(D!!
  184. M0"!N4 ?L:7@UHB;C00,Y $DU  -6Z@19, 3O0:K7,1,YH !%0*/_I"I@% 8#
  185. M!2M%-T?\PFBI@@)7) /6$44R  (R$*PS8*M7$P9XD*N[VJLV\*LP4 ,R  -\
  186. M>JC2.JW4>J@SM$;8FJW:NJW<VJU@(1 O$!;>ZAE#9!$UD!$;<41W,1(EH1=R
  187. M<:Y/!!@S0 .$01-1)!/CBD-=]!@P$%!+(4:*6D8H<499D:\&FT8C$ (O( :3
  188. M\@+YTQK"%;%M%*$)DARR41NPD0"WL1N[T1N_D:>Q^AK) 4@+)4C481W=<4C9
  189. MD4@<)QY7>!Z-"DG+(4GQ :&6E!\,I4D<U$G,0K$*PB"BU)&E%""GU!RIM$HA
  190. MXDK! 4MID"(K<G9$=TLWDB.1QDL^ B2ZR7C$U#9/$B5)HTQ9LB5=@HIA$FD!
  191. M-$UHHB8-F$UF)R=2T4U2"DY8)FY[:4Y^F4X/E2/M%"F1)T^8 H^<TG3X%"%"
  192. ML4_]A"JPVD>S6E",0DRU(@>W@D""4K*\$FDQ"E%P.5%/45$(6;'.\E=YPU&"
  193. MQ3<?92\B52XDQ5<GQ2ZWQ54M92]- U-8-5,#8U-0X[.RLS"R!3&T%3P5 U09
  194. MLS$D951:!31)A3(JPS*QDSLS(U4V0P4XPRA7)5-'9;RN6S3V<CI?*U:U^S11
  195. M<S5G5517DS5;TS6;]589$U=GDS9KDS%<BU=R0S=]=5IXLU'6,KJ$95C-.SA2
  196. M93C_@CA9@ZJ1!3F24UF7@UF9(U6<Y3GU 5I$)5JYBSJJLSNL@UI)\#JQ,SN,
  197. MTEJXHR^QU3 [U;NV-3RY!5F[=5+,,P4]^SR"6V+38UT"=ST]I#W_\F(KG""!
  198. M5DL[AA^.E@9!YL)Q4 =IT*:I(K*, AL>(@=N$ 9"\AZ?%J0C-!W==@+%9S_I
  199. M 11PF645YF5<1H"6B)I&++%B_$ 1J@!" #HEDP12T -@D,1+/)XD  -@0$% 
  200. M$09G4 8H8!U[(*?CQ ,\< )%H# GP'MU?,>I(AO&^,8X@G@QQR+29X/B=G<\
  201. MD,A,7 8^ )8Z,LE\I\B77&%E@ =+.WLOTDM#3(9/8:>P85XM%GHZ9G(DDD\9
  202. M)B'7PY<8^7=S.72TQW?;1:0V4H)P"!LY*&4K0A]&@% ,\A074F:8*6(>LETE
  203. M)VTHYRM$Z('\1";4<SV(A\E7]@)*$IOT<U&!; 0*T <4]"'G\UXDD" M4 9Q
  204. M  +0>BMND(&%C"-GH0#FO 4@$ (E1")?\ 5A\05J$([]# )=<&RDEH%ML 9)
  205. M# +]_,\!_5S]7$UI0$'7YR,9B"PE-'0-+1  +=!?\ (JD('FO"+OU0)#1P)I
  206. MD%\9",\1BK$&6"9=* (^R$\11R$B($<@8 6<.4HQX (P$ ;OL;%O\0(R4 ,R
  207. M[=(UW84D>TZ#A+*&Q!TKJT@=][*/M!XS>S*4=-2U\=(V?;.8%!TZRTD%0A\R
  208. M/=-<'=-FG=0BD,-16R--299;F'<$&1Q^!YP=I-6T<=8M,!XB<'4D0J320W=F
  209. M9B)U+20N&&E%5FIJRFH_S",_,!UY\ )N8!UX/1N!32)X,-/SR"(D4&DKE@<J
  210. M8!T[L ,@$-JP\<D<&@.D#2"BTGVS<=8B4-FGK=8H!)<O)AQ<( (HG5^Y#4T@
  211. MD-N[/02Y+=LT#=.Q[=JPX1H8FR!99I7O94&V1XKX0:&44B)2<<=W,GV?%B,_
  212. MYL,QF&X<&LS:-=,)LHD_ B3::7[P-70BP'P/8I(%<H;TUX7A=X;7%RSHF,RZ
  213. M5@:/<F7!1-[K;6:$N9OTP=8P EU!_"O_(TX@Z<3Z<W+LZ+9/.]\Q%&&UH=P7
  214. MGIFV=W3272P<)!TC,"E[5P??E7TK0J5:.8BB(D"86<O20P8 [J(L\M#%R'?T
  215. M400K7BRP5R=MQV9E"6))PGS4[)JA%^.UY%PJ)LLLLM%JT-$0_07T1I+5A<H7
  216. M/M/;;=(@0 )GG#8M(P4.BYYN *F[K5]\D.5;GL9>/F@@X ,,[<\<3>/]_ *[
  217. MK0;(#0(83AL) MVN9G-X9RE[LB*&F^,]CIDR#@+>?&&^_9UK0DW++<I+[N9-
  218. M#N=0GL2F+ =4CN=67B=8KN5HW.5?[B%AGN4I76%ESNE<KL8O,&A/LN8@\ )[
  219. M8@>2G8=U?N>SP=S7L\72X\6MIB3H5P36T>%MFFSXEGK7$^+RP08D7@8!"DT 
  220. MSF>A>69(SD_?E@<TIYYO<,>1:^%X_AUA$"=#$HQ/&X5/(1S!QB(W+17VQF<>
  221. M..+?=7<BZ@+$3>O)/6Z@'@.@$LNU1);\A =05F+[LUWWO2?^MF%9QLP%A,MM
  222. M N"$9WAVQWRC<B3SF>(>GM_:7NLM71M1W +_PN1.'@9Q/N? Z@,<+^GA.A_3
  223. M! )ES@4@E  L?^4G?>:>_FF38N]L/N?A6,88Z_)FWNFH+O-N\*LC[]$E;X1G
  224. MDM9E8O0V'1:I$A\4M9N5<LB!W4TO=H8V_UQ(GX&,%B S/<]F#<J,/AOU_)"+
  225. M?'?/?'*P?"I*GF>VY^*[&>"YK&>[?&J]_"=O@'CBO8#$;,S(@LRM9"G+/&+.
  226. M_.!EQR+2W$TK5@;6;%W8#!O:3 ;<['D59L,4%,[C7,ZXC#Y9KL[L[,X&W6ZT
  227. MP?7U_"$[5.%#<+!?4:YRT:Y&Y!%(A!>J?Q(V\!(V(!,K 452!!,AP1(7@1A9
  228. M9/J>L:]?U$>4$;!=D1E8X?O(?T,@#;%CW/S@8SZQ45P8.QM"30,="QMXND<A
  229. MVRS8;[<F2T@I"]7>T;*,]'$PFQY6W1Y8;;.6\M4]\A\[.];0#TH-LF"C5#VF
  230. MI%!'^R%)&VFO%$M/:^#8$K>62QC%+ND1O@1K!9.VM[7LRC'Y6E<B;#43LN7;
  231. MSM:9:%QJBTVXB;;%3>I$W$I1UP5J32ZFAK<4A=YZ%'R+&/FM^0&X[LF]$Q6D
  232. MPE4!E%BUN(K.K&AXD"NAC$"_Y%" 140I%DU/]T"_C!*Z[M=@V18@!5R,%**B
  233. MNM0%ZW(7$Z.KN)38)3-DRN2@*60%:B0,W07"9DMMH1@_A6<$KZ%B-89'\2H9
  234. M)V.I*"^GPKRB2LV@*CEC9_@+^' &,4L4?%U?97LQC2SXO:8&%:@:XLNQE*^V
  235. M<K["1OHJ&^N+KK@ONP*_](K\\BOU*[ <P<*")0Y+8NE?C*4( ##%(< <!P&C
  236. M+)7C@&46!=8Y/$L#JP^AI71$L-)"P4Y+:LE@4H!V. S7 EN<RN[B*>6B=1$/
  237. M$Q8W> OR\"W-POD)P]2@ %3 "Z @+R 9*L-ER R;H3-<AK-A"JBM&;8][DZK
  238. M>X;8\!G^%A&'[+X+#S #)P)2/"$TX -: S=,=B" !T"(<,C$7  Y-(?'#AWR
  239. M@!,!8-QA.31V[(Y%3#+]9 _A83Y,AT&!#/@*,= /_6$W-'<5#@F4M=)$9,0)
  240. M E$!7&,(+ $"=H=$P%@2$E! [-BQ,B "=D "2(:Q(4E!K>JQHS(32-J(AJ*2
  241. MR:F-U!"'0FD+ OH""4"+.]2%+F(9$ *J) ]TQ(_X D+B=4M%,((DF@D$HLA6
  242. M(G[SB0_QF' -4E41;>)RD!]':B>"Q(CS$T<BA2B)Q^=(E;,2M"=2!+&X0S!@
  243. M!\01AUC:R 9CV2QVJ O!J%_1A4B;G"*+$+$7*H]_41$3T'-Y6ATQ0E'%AT@N
  244. M$$L1& +0"[-4Q+SX%EVB"A 57PR!W*&^"+T 8\D0B_:L!#$3.D!C0%):#(LL
  245. M#R1FJ,9#;GS#4,ACA1&!I)?*N ;\&5D$BQZ1)XX;%H'M/*,< (WA!S;L.-]T
  246. M&5,C2*0]A4;K[#@\5'@.3VQD(5] /M7&S-@3"9#;:@,_B--$$_9Q I[$"0 !
  247. M/T !S AVB!RG27JQC3UQ*,(7%9%>I",XA"7BT 39HCF '<^'_'@*F(B5$9.@
  248. M\!3@TADP2I4"^D2*T%@L_$RE2 ,H20YL@6=% W! %RB/#)%"G28$@HSN(TI2
  249. M%:$,V.P;?G(HZ@!T^ 'Y1P& 1'=$A!0?(SD18T!^H( Y$ -8P!S@5?*%(2+%
  250. MTO8%Z$"'))%T0 :(Q1&P)_B,(P./<6!#GL@/:1VF0XF, 3V 0[* $BD#<J0,
  251. MV)$F<@O @"[0 WH CQ2270 ZYC,,J2%OY KHD#SR25J'5"&J6D.+G!0O4HFQ
  252. M,QGIQ'C5= @!&Q)&<LD8P:M20/[9BYR1#KA&T+@'8 /B,6?_1T601CTVTT:C
  253. MV*F-%X\V2(]RH\0F(VDTC4-!+,*&/G#QLMZ:&#HH( 2\#S< A69$'J.3M %-
  254. MC@%!.1OV&,9:E"[ O9$;,]">OH0.T %S8-G  5Z3 BAEI%PQ/H#-3<J9!B=)
  255. M2)$$ 2> "\B!$V =]B27& ^MT2'F,5,Y&^!D>R(2*8"$\ !WAO+*'*8L X[2
  256. M3(* -FDK^V0X(VWD#&.U2CMTAV*E&Z"5"/*^'(KDPBNC9:]$E-9114#*VA N
  257. MI8,?BPV\4@,A2E=9+;G M;0.Y3(=#LLS-!LZ8@;REK"A68Z'53DH^<G/81&6
  258. MTK*1FUNI,10&I21GY$P!V 'P0R*83Z[\C)*2^P1,.VD9[Y!JNW@4LS2BR3NT
  259. M*A-F; P.X(1(_$HBH\=<&)\<#\&A4ERJ-G"RBF5L*)(GX N< &A)018F_ B5
  260. M/FP*6! PPR81CZ2DE&3&5:;)-5DJ91#]F X.8F?BL>H@VA"/P^R,NK(ZB,6$
  261. M*2)C8\PP JI#"]#%5"4#:(!8K)HEZ'%@@2L +8@ 1Y&(67-K6I&O219MCAP@
  262. M Q\')&T!L4DVI8#9M!9H,PEHS2ZP!:YFVOR/"I-AUD<Z< 6> MPL7&N@9\(&
  263. M8C(R=T0/"(L[@@?0S;)Y-HN-WBP"I"T-))=?9SCCYAK8 FF ;P[)M!@K8<#,
  264. MK'R!$WY,(<_9./=$D$$#$A/Q,,[8Z 9Z@.MT$:3-#?@ R.D&^I1UR$ P2%YV
  265. M(2Y !\[0N1P/YU($$$_C.2S=YN$4.W,S"(Q-RHDW+:?6W&M)\EP."8$X-6NF
  266. MX&R-?,<)5#(C<"?: .M$DRK &'T!139'8N/MA)T*(&!BR.9 '?C.^JQD<R2V
  267. ME4K9R>MHI^WD;[C34$A.Z5DW[V80R)O7\WVV !5I*%9 #Y@!XY(VP,D3<5]B
  268. MI//TG-%S>MK-RIDV6T!ODI)=X#V( !T@ JP#'^ #*R\!4- M>4$19P8MH!ST
  269. M<GI0-[ ">%4([4(D5%F"$#$0V-; P7R3B+(K.DCKL#H19V_:GXN3U[F!W.D#
  270. MWF?N; $/E/OD/%A2F.JGGKF?30PVM%#H.3DW:/7LH&Z@"R!1$R0'JJCZ9)]:
  271. MM'.ZT"YJ0!%H$6@![U.,=L_(*!VP7>%\F]0!+J8(,_ %WD-LW*,/ B5]@=@)
  272. M&W F'-"9[V@.[$K>,SM+4.WDG3P D.+',@#E3,!Z4)0U"EERRJ))0U= !!52
  273. MT\$-1-(Z  XGZ2 -,:3T"VR!,)H6'^9KW)\B#5'N457*2E_E"7@!V+)-LCSB
  274. M&"-$9?R@4JP248I222I(K<,LW0+)I98.35TY1B6H+$VEJS1)VE)<JL=VJ6K,
  275. M,K<4EZ8X63']?,2RG&G.-)2.TE):3%$I'T6F*T"9NM)%VDT)I8$ZFKUIG 92
  276. M2JH>+NFQ3);UU)S2TBX0 GJ M:258C$!Z,LT>4?)  J8I>^!F%+29CH;\.5K
  277. M^Y=Y\EM.AV-:2ZNE"LBEUO0V7H];>E&W*0AYIQDGGBK42FI/,VFR_*08B\P$
  278. MS&ZJ+L7I2#6FT%2=0LW/R% QECM]$2%UF)+2>4I2\]D]W:3YE*+R4W]Z46MJ
  279. M5Q*F\M24PM1S*E/5)#,-J"WUH,94:5HMJ6F(Z:$!E9P)U('9)^VHX92J?#2A
  280. M[E2EFBY!@$,];1!UI1[54+H[K</3=*J?D:+V*3D:40?EO8RE$W6J4DM8.0)R
  281. M*0C(J#W1D&X971=F9,BE)(O\LC:HU!?22F?J*W6+"6!:VE(NP 7\JM!<IT7S
  282. MLCK676E69]I-A:>8E%%JTCR63\= /_VG1G6@>E4\BE#-*4]EJ DSG(+5?;I7
  283. M8^4)\*N %2G"0%S!$-]6>$JI%$*MRE:=2DX7JCY%ITV5: 94."E4:RMES:7@
  284. M5***U+%:3H]I,I6FRY2FEM7AFE2K*S2]KHT5KC[6M9, SJI9-9HYM;O24TOJ
  285. M4TTJ4&6O0O6T5E: .M,HZI/$KJ7S=&*L@4I#5=M=Q:NS-9K65A& 6W>I9F1:
  286. M&Z:W:J&9MEB[*9PDKJ_UN(+7.X19E^LS9:I4%58^5Y2Z5J=K<3VEUC6=8M<*
  287. M&UVC*H15JA)6Q(97Y4I>S>MG3:\C-9^&UD;Y7M=#?/6G!-:HVM<8@%^Y@.DL
  288. MJ_SU279+UP8G0P#(%'AT(,"&467)0R&%#S6P/7%[NKTW4!;BF5TUL6VU0@R+
  289. MS2I76X <13P[ML?^6/Z)0!IG&GB<F7. :M V:CW?Z,74G)X4A,S//( "MJC<
  290. M#)W\2(U"3\W)8\?HG*VS>O;.WM!9.D8'ZD\EK8\MG(& 5-%?YVAL-*0%57&*
  291. MQT0Q(H^IW[R<@#-?<E5<26XB;6N]M%IS?WK,$J3N(BWZ=)XE\@U\ 75'2$$I
  292. M"A"B9\ ZL" $DCQ+[5=EG@#$<*;:5:MKA&<)=9?V$C:@R3VZ'VN #<BTWE2M
  293. MPLG5:E#WZ'LH:C; .KS*<%8K-ZT[.YCHE3VM4 NJ:R<$K[TR8M4,F$E*.5#]
  294. M*Z$L8[%1W06!*X.;$!$=F *BTM3"153K;=4=@C*,#XD.? %#VFKA)*R5M5'(
  295. MUZI;=OL&W"V\]6&1%M?26U6K[H1G"F5Y(H %X-I\NV]]:?), <"64@Y;4EIL
  296. MCRW0#*X EMF"U6=K;*7M':*V)I-@AD4 ^V]C0\!-GB+7.C"HX28\]ZBOI;D7
  297. M-^,"V' 8(YVM ]*W_+;:GLQK>_%>K+:%)144T+[-76MOS>FX13SE=FJZ23K:
  298. M2WW86* #$0? Y%'#N' KK@^[MP^QZ[+:^ E$IT/+G;6^UI!>W:P[+%" PNVV
  299. MJE:PGLN'FP B[MM=NO6VUU[<9:ESA2U9)+;0%MDV6.DJ<GTNM#6Y!=,("%V5
  300. MRRO][9L8HBZW!?E:C(5K;:[V9$F-%U'R7*5+!G:M(0VW9E+.BLJU:Y8XK^<5
  301. ME7D6[S)<73-&C>YTV+:F-^^"6Z<[1AVO5P2XDC=Y]@%<NSWU$-2UMN;63:+/
  302. M)E J&!X5$#YE0'PZIBV 70.F")A(2HGK1-PN5 16YO05 4&@!76[ZTM\/PRH
  303. M$:'Q8<>1@>X;9Z8OXA$!RP&_"<CJ<GW#+Y8D ^G7-+'?]W!^B0#Z6+]/H?V>
  304. MA_=K?^5O_J6_L,$B"I,Q0'Y5R?7].(G"_<:> @QJQAEDS(C(@@DL+17@PN@.
  305. M!&X#$C@H+%*J&QP0\*]@P-2!)8[(]&D_T:B(1)\="(N*'L@X!/C.?^!B 2)4
  306. M,!X2?$4U5VU$AMDP!^O@'<R#L:&$[(EC(Z_HCB/P@WNP$3["2#@9>D_XT8+U
  307. M#/'MC7+@!;>I!?A@/N440@%->,%(X4TB@T=)^NRWPO23)5EE>5_X71Y+/U=8
  308. M:I9=%+#P!$2)1+ZD]55FX3GPA!G>%H[!PB1"?$KH6Y&XSB<-GLF3-N!:_41:
  309. M S&N562%>%Z:(5X)B(=E[_VA:+411=4V+ ?>\*.(PW=H#M=A 7&'J?"1^)35
  310. M-TC\X9,7B.NE\"3$UL$0"T]$G(H5<;"=#8V807)/Q.,M#>4WC92DV!%C7N"9
  311. MB[L0;0A718=*.08ZH )4 ._=Q;BX.97BV4"!SQ C[L4HH#=5LCR&)&NK'\"6
  312. MCTT$.#M?@9+.$*.=QLKR\LYBVL"+E?&\Q(<'\;?%-N$Y!M(/*_:U_>P0@^/,
  313. M:R,U2"43/U6JKC(T>[R9-@@:)D%TX/@.GQ L+GFEH=1LO5@$? &;"6J>L3D>
  314. MGNM8'/O><FPNYZ4@%IZ(<=>]4N'YB%U;+!8!Z!@=XMQAV8Y]P#M.GO%X%<]C
  315. M /L%^#&YX4R_$V.U9,WTDOVQ#YA" AE $&0ZP% /\J5,R N98;YB80N4OX#!
  316. M&\FRV/?:U83)D)6#"^9O4[@+ZV$=<(5+YAK^ L%AWYH; ;%XE1AD),H/N2.#
  317. MY8K<A8!Q&Q#&0X$8&V..C(POQ4,^0Q28+\EC(9&(D[+&3<BES1=+Y+O\EO,R
  318. M6_,N)2K=&![(<\?NBTVJ$U@LP0H$>,>6Q[%;)LMP63G8"@!Q\*2:RS)_52V2
  319. MK#_&O)=])EZFP/]!L!7F8(0?")M1L&OTAAXZK3I!FHJ+X3D6')$O0^8*\0/K
  320. M%GDYQH[Y(^=E(Z D-!>R:'L7Y^3AM!A,(ES5<O%7-; -X&:E_)@G;S-NS,Q9
  321. M-U/@I>:74M8+0"0B5%XJQ<41B&_6.1$.4WA Q#?H+)N=,P@  K/HPR 07 L3
  322. M^X6[Z,QCV3G/J6"R/5_ <O[*KC8$3)ST\2@1\EM>BR3D%7]DN:R2Z7(K]L7V
  323. M<@U+GT?Q2J4HQDO(8GA[MA[AN: %Q!DVR2LYJE;HC<Q>-_2%+L-CF,/JYBA%
  324. MF5*07AZ6'CH%N&,Q_*$S=(=-T2O:#*MHD\RB=6@"2*)E=@IL93DPASNQ5!X/
  325. M*D XW"$83:-E=(P>PZ2-/$8H:[I+A72,.-*/\IO>:%B<D+< KIT#[A@<^]HN
  326. M8"^GM(:&TM:A0V=I \U]O#25?LLB%*IV5KOJF?OR'KC/:Y@2*U)E*:<O]!6F
  327. M)46S39-EL>QJ3=ROR,=J]2.'Y.^2V_J9GQX#<P I\^E".H )RBD*$.QT33=G
  328. MW;N')#)Y1IU%. EKZDWM#)<PB;AL<Q@GTJ:M^Q#/:"4;HW_D*<-@3WQK0IJZ
  329. MF\,A^"BB3U.=13_F'-#*#-J?\9U6>ZB=LI[QT7D82(\!?[;B6 1J1#R]6E(6
  330. M:UU]1159QT6VK9)81QP6T:'%)*U.9D5F6C/K!:."E:6AE=9M@E(RSAX-E;EP
  331. ML"YM0E-]:B[2-BEC0UHLR2 Z2N]<:SVF\9B5NM;*4KC&!G!MK-&EE:.B]#-;
  332. MMXEM?:M-< D^U4#6VB;6*^NN[]!]N0.^6@N7:SR\FZPHMS;8-=A8O $_>JLW
  333. M-,$>H^I:8[]KMZAIAV[']-3CYMWN:%A]@N'BM>ZC[:4E/D2/_;+!\.L5DS3[
  334. M8 L)F&UWO?6FI92V%_*BW>09(%0V@Y[#.AG7OFQ?*T+I+FPXESF[65<R*)=S
  335. MW< K)M>K^D>C:WMWAUXUW['8!7MJOP=112FQ=E0^U^GS5W5M70.KH_;%%MO7
  336. M 63'@/1#=^#FRO[: 4'4;D7I<-ET]-'698JT91O&FDUVH^K9?;GSLF_?;;BG
  337. M2)6VSJ:G55M _UV.&W@I)4AE3S'@DR[;3OM5#6_)W:LH=Z"N7-EZN'/OO(RY
  338. M)83-(67+.R^1\J^UVO0X3$J/GDM*)6X.K9$9"Y9-"DP5NS>OLQ4! +J$XNY[
  339. MM[O+0.\6D[_;+BX@X4VE!Q[OGM>S>^0"[SL!Z-('\];=E\IX0^\MZ7-%P)MF
  340. MLEAU>]-N,Y"FF;?H)MD/]5,4;;\M(%CVXX;9>[3U_MZA:VY1]F7;Q') 5-/9
  341. M6?V^P6YIH\0J&&:C3_W41U?>!<[ TJ$8NV1\?$H+]XA\,2JX;U*.OXF?_RP$
  342. M1Z,*&=)UO#A70BDEAO03*.""XT^U%[9WMI^EHB!<A&?1#-[!D34*3[(J/)D!
  343. M<$4V2($VHE0!"YPS-7#:@ )P.$UFX#,:)R-?11K#\S3B*9=&J+^%</JA@OVH
  344. MI]0!AR+7&87M@Y_AI ]7"OWX5L?DV=##<_@&&:3_./P$@3EP@15IN:R]FA?I
  345. M;DD"+D(9<@G-IRL/]K+Q$?K&+6D<5^,Q<HZ;H3!M NZXELSCR+>/BH#=R\?I
  346. M+I.$ V [@'.(XNN&:7CHI0WQ<AG#!@H,! ;J( [DEQHV1'*+3!O29S"FS]L,
  347. M3FMR[J@B8,6CMM<5_(4O\;30Q+M0/S-X+7R4TX'TDL2'Q"JGI&AT'7[**,[?
  348. MIO@*5M!XW/($<A&:0_.I'!_F';&.KX=C_B@$.2%WT+)\*DGR2][,)V^"GL2,
  349. MO!+3\&IL2Z\Q--^.L_PM-^5M/$E)ZYL& 932%JO53>[CH'  ][5N%YT#V"M^
  350. MCW7X%N?A]#R+@_&;#)"5KTX^X[R2G;_Q-_U#CS@IG\VXMD!R8P'AP0$VG57H
  351. MDQ3<Z,\*/GK]!-L] V[W38M00NX6#7HXW]-M&8GO'52T2$<MWX84XS>;DVIT
  352. MW;^7= +0Q-D<6.^F3YF32YM^JC(L#WW2</^M M@X]7&MIA2G)X #'LH4^ ^W
  353. MYQ%*?@[@GSZG/%Z&&@_'&O'D\YI\JV_P&B[=M#9QHW3\'<_/Y=*>NTS:[A9H
  354. MR#TLZ:Y8/Y<$W-=B7-CM,\EB@+#'U46"8TU,"[1+4%;NU<<:-FSST=DNQRRC
  355. MMD4_'?N DR\P)(*$58^J37W?<BH.&[1C;>3-ZEVHJ:]&-X!ABK=E$B#ZZ42W
  356. M"$P.GR6U.@^FTT'D^O27NE<3;U<>#Z.[PV)U@3O$WHOS[ '4G*P/3[;.IC6T
  357. MF)SCP5M95LJ(FI$+:UHTBYN#5T+:KUHTHV[1+93_$IA';]P.'.XB1]3MRY*W
  358. M]Q\9H1B#,/*8B\(]WA)WTF;<:3%RUWJV?;DC<P)4O>-;OI;NB?&W2P&_Z!B)
  359. M /HNI-H=CQ9WX(N^"27B\<E]^K8C\\*NG/,URWV\CGUHSTO^KMG3>O+LN](U
  360. M! Q<,M!N$<7!A0,)5Z.W1>8]T\YWR.7<>'2T4U?C^BI->\KMDZE= S6?/4'8
  361. M5V9:]*\,&TX*=A+/WS5W&A?OS7RC,^\]H!J3Q46_Q5UIQ%-2 I_7:T/4O:NT
  362. MX<_N],W>S!GJYB:<7_6MVS(J ]3+:8</W=8VQ.?WZ*WD;1*3%P&PW;]+2T0I
  363. M<JN\, JW$?;)*XS3?FW_=1D%X4/^#%5$H_K!D^R0]_+5Q:@>^4@+YYD\:1?S
  364. MBO?#H_8A*ULW;YT'-UWHF2_+&F_1S1*.EZ ZOL0;]A[/L!EU&:6?/MW3+/5M
  365. M3'UBN71=[<F3P,]EV:X\:3LSSNR9F._@;YE>A74 'UY*O/+'U_8IO\:1^?<N
  366. MF6JWT&O=2,_1]?QUH)F(!R36OQ_8)J-C>&_U,7Z0SW@MNTX).)+,K,'8J7,J
  367. M-&OK(:=]5^[ GI)*W#U.YOTKM ?DP=X8S7C@21:==>7F]BYQ/Q<(@AW!O[UL
  368. M%;GBOO->:Y(;;4'WF+?U*/[2 WC<"]E%0+HG]XH,MJ_B=Z/N'_?-]?1157'_
  369. M;<8MC86$EJ\-0GZ$U^RRVN8+?C*[]_@Z8=.=4)T3';Y1]=IZQN&S %&UHJ<9
  370. M"LC<#+^B8]W2Z[VO;ZT'[2B@R_.W)0_H[_S)???G6Q^K^H9*B]<PNH?;+A\V
  371. M0/FAF]H;.[WWM?E^TU/MULW6K[W#%^1N][QGH(2_LYU-((>EI'O>/W9?^YJ1
  372. M6<S&O^LYDS-C+U[5[]!E(^H:&.I+UP7?X-]M?#>H);]\'_P^+R:'?,WFL),<
  373. MU$=L.AS3)S:K=@.?4@$7B/@+2S[14PBH]SN;Z^^C_Q[2_/3E^C5<'YO7S[Y5
  374. MZ0[^'OQ#WO OG:/^Q?-T-YWYM,&A.E3\WLGE/DR'PJ3^$^L OH_U\;/AEOH"
  375. MO@L%.<3&$K&^9E_4\+Z@&_TY[@>&_=)7Y3[=D0MWAT[XB?Q"W?V/GLY&>DL_
  376. MR1%_6OSZ0P$#+ZU('57)?L%U\&<_HU]?:G_H/SWR38N?WP[;_1^=]_=O[.F_
  377. M?7] 2OR4#H4A_]1^DH4?;L>VR8_%J7KB!_+I6R#5AIY^_4.]$Z[[63M8?TKP
  378. M7_J);!!%_8B;ZK>5D A[@O^5]75V)1O!%.]Y2Q-4VR>VE7SG7:PW\FE=:5^@
  379. MU\'%?I): QB][73"WGGW5JU))T ? %#]4LK>D,#LQ7P,X(NW)7& U%^;] 'J
  380. M2C/3"&C<Q58V7?TW]XUZVY_^9^I1)*@>F34=C#8NWLT&XTE[DIXMPKS==4N=
  381. MQ12[J7QPG9VWX9U2TQ;,%^6]=ZX6IC<O_7GZ'M2V\EEY]9[.);YM2%O@E]<!
  382. MEDPOX&<4 HZ B=U3=P).@9+:KQ<C_7D2UZLWZ(%$YI4$>-%)?S*>Y4?SL7U4
  383. M7A@(BH@ 5MK:-QO8@22?E29"<6EZ8.=G V9_G%@..-/I -F74I 'E%5-%EE 
  384. M!3I4&N"6! >* $E?R<1+73;M',.3F;1_^%B=X_--?40;IR(>02X!CN+Q\$0(
  385. MHIQJ!P":;EU(U5=\('\16"@3"W9RQI_7A]*!?4@:RO=OO1 !H APF. *N*#R
  386. M]UXL9P+7 )AC="!P&LKG_!E<T5\%F,SE:ZJ1>>4&$GY8'O/6E71L2>"M%UUE
  387. M@C$2!]A/>8.]$C@(V"F!XZ *6 X^@$42.JB!J(.4%COH8+F#W.##)@\B@>N@
  388. M.'@/"H$KX /XA;QD1R ]R!:Q@]%5X%?^57PO6_K7]/E^,!OB9\1U4_3?HY 6
  389. MM2<&(2'QV#""49@C6.IY8&. WI?2>5\I%&V0*G"$H=]4)A(R8&75XI=615<5
  390. M8;^&$>Y; YAUL!&*>OC?V?8(@H0,6$DX&YR$."'HYQ&*?BRA9R4,SH+UGI2U
  391. M9KB"#\8N.!M4@CY41-4') !?X"9(_4&%QUL?V 1*=!*7((B+G64E(%0G#FY5
  392. M]-N0A?5 5.0@-VB,*4ND33+4\.5^4UM/AA;B@QR@"<"\M84."^XWS*5$)IQ!
  393. M!E%14&, I+<7#GDO%? G']!/;YX?Z 1^6/+;-CC'W6YD5& H_.V%$]W\I@#.
  394. M42CA4-BJ2317!E<GN)5JCUM_\5Z@8#].YZ7(M%IFF[G6]J1/:1'&MV D<F@4
  395. MV;:&$1(9R+@6%&I_^=]JB!QQ3.E'G58TM0&DS6[(9H!IW]PVV ;4:WG,(N=]
  396. M=6MD'G!H&8)XCI9=-P?PA*5AK#8:NFRA8<PV@J5@IZ$#EQ9RA_A3-PC="4QE
  397. MH=$''C8Q(L Y.![&?N9A:=C$87E9WO#&'AJ'[B'[9.^5 7> /#CS?8?U87@X
  398. M$*X(YAM]AWADAKGA#"8<JCN>879X'OYR454(T 9\4C.?MS10L6&]839GB=EK
  399. M11*!J!-^A ,8 U8LE5C#H0\ P*%B&>)MV @6B*(?2+@2EH9Z&P=VJWD\SX6O
  400. M8!I.8SK=J>; 38B*3#[EK(U.[-6..%3%@"UB4P:J\1V#'_\FM1E\WN'_=WNA
  401. M@EK=Q$<DYD2:W;5VJ0V(JMJ&Z(4)3:YAX)8=RH9^5[A7R3QK&A=9I)^ B53B
  402. M_2<4HHA364TW(B)?99N)V!&BB4!:&^!+U '*1X^G(:J&!N(-IB D?PA<::-!
  403. MN J6&T[%GBB$# ]L.,*9 &OBH^ 0)C,W';!B;+T')L"?6*5\<RK>B[B0W4<S
  404. M(EUV&G)8PN'#=@/FA'CBD2#,*8I\83+S<"6*,AS[YRJT$M,=:E)6E61UVH-(
  405. M!4YB%:([1R+V '<BQ5;J,6#%(=C#Z\B)9D*=&!O4B@S/G!8<SHE<Q[$8+&8<
  406. M=PBP2">F!<0AB.@K'8<BHH5X*^:*=]^G1!UZ7Q\B2X6Q4(NH8AY3(IJ)N*&5
  407. M.)7QBO44B!CDB4G4(BO&(2"+T"*&1J:EB][BNAB]48NHV+NX+'(9/@ JYM^9
  408. M:5,1NK-N" JC2-Z!)\0D;X O0B(PA1 /") 'D!L'@ID&+EJ+<!BVR/WI -MB
  409. MG+$_36F:'^K4E &#^Q^C\9))6@]6C;9^U&CIA_T%AD1J_R%01!YYC((3R$B5
  410. M]7.5C!E'':D'00Y/EB1^2:Q8-79"D5$!H8'6Q@EE/MO)9,.%4C6:CH@R]HMP
  411. M6 IP[%5_\5H01S,Z)B'<--$8NEI1H])HI#&-EYC3."1]<SDCT]86*7=)E[LH
  412. M L  PEMMV(NA8M;<6%?2H6PRXQ0RQI5Q*,"7 !XQ,3BCU;@S)DH]X^CT,VY>
  413. M[F(7XL85C;?2T=B;)(T]XM*(BCV-:E74&,81"7-C\D?$68V0V)17-H)C$A?:
  414. M^,CYBGU9)W>>\6.:W4FFB\UB3%G,R"<N+5880):3!6YZ%"EELR5*B^/7J.<9
  415. MCE'C-^<X\G/AQ^H(5IUP9UZ2U;U] 99>6I@OMC?-!WP#:FR.CEX5U;W5-V,4
  416. MYQ<9@G ^E[\X1WV,IV-0D#KFCD-<W7@SF@ YX^L8 L2.8M3LN(;5CAG([2C$
  417. M#63=H[@&E+UBPF/3*'&Y-\Z'>0<V)F3U33J7W"4>:V/3.$<!@Q18,HC D8Q*
  418. MHM!6#-)GX\<O6#V.8=%@EPC#5%EDXIZ8"[X7*D#ADQ9YBL"@VV5W15PH /^8
  419. M G")(YA^$B8:1HK,QU7]S7E?U8109;%[B-?.QWCY?P!A'D=E#0DB5%?H,FU>
  420. M)B0,V86D -L>QB+WV5F?$QL50UU/,P"R11ODB'<(#_E"44\'5)NU0 %.*!\-
  421. MB7Q)7#+DWZC?*8J<8 [)4NV0@58/24 AD6[4$KE=S09$9$S3$IJ"^.!-1\=Y
  422. MA;4!%ODV85 ^Y!<E0\D 0N3T$T;&-F-D$SE%7@@BP%H(]\T&:N3S)#>UD4ED
  423. M!T4#Q)$82QAI1 *2720<64=N>2WDJ(A'VH5H)&W01[*16Z07%4C*4(/D%ZG7
  424. M53)IT2%92;)9'90B:13:D4.@Q!4?5G\ZI WH2:Y9/^0;50,0DK6!(9E%'I&6
  425. M9!>928Z2C*3L%C0F,R( )/D[J5"\'P;GEIQE>0#P*.?1A2-<'DGA 9/!G\;7
  426. MA0R3;4 QV<*1DEL2\?C>Q![3URH)0[F1U],@6<CM4KHDML=+GB+#PALG19:2
  427. M74C) ;F8DRC4+@4TBI,B%/,X0]Z1(M1>)+SMD9/D&O5)MI(MP"W)3%91C:)"
  428. MUL+]DR!<HZA-<I%*9!!I5-& ?&"T)T+!C\:C,N?2)0#AI#,I I"39P [^4Y:
  429. ME.ID\61"M9,LST:)P<F3Y^0N64\Z1/>DE/86/I&NW$"Y4I**IV% Q?3QDL1?
  430. M;2!!.FSXX=AP0#J2(M3T5?@LE&;-_?BB.8 KW.!XS]F4H0Q.";%5D!B<3[FT
  431. M&%7.8U1U9 43#M^QURO*1DDE&K)4[I2-(AKU4Y954:5TY2/65B@ M@0BWI1:
  432. MI4[Y0"99ZU],\QY\E2!$6$D;H)44)%?)4IZ-3F50 %MY=Y?;ET1#OI"471?R
  433. MO<E8?^4).>'Q<4O2;0=8BE XY--UU4E];1+P5 P23W(?4I;9'7CK&!68^BE/
  434. M=$ 8B93EB)CE?59T\1["XV)Y0UJ1495H9UH>7NY>GF?A-90NI&%YT[!$J"7A
  435. MA>$95#5D8,E:1H&NY10(_]& 2AAL !*!@A!=?H0@!06YWC'D&)J69V00F/+=
  436. MEI;':OFY\99DGI3W9Q67 H((Y2XM3T9>";*AD7Y^'X^VB3!ZV99?J5C*EH,E
  437. M>Q4"%)8VY#7(V"%*N262Y /X4T' "6!)Q9=#$@_@3VD!T)6WV/!AEX">I[&C
  438. MU90YS\K6^H670\!XZ0_6!BXA>/>B&9CJ%X)Y8^R1RZ5LV0D^CTD6@"E")7V:
  439. MI+^$HY21S&5C26':BU64AGE#[@#;I4?980Z"$*8!F&!:"O8@2Z4-QG^L7FS9
  440. M7G:%UL%_F7LX*1%=#$E@;C5_H2IG8N:60*5+\Q)ZBZ6EA<F\Z9CVT4(78&9Y
  441. M':8MEF2VER(FAODK-9D]9EN48OZ8><U<V$CFECZFLL1D&@D&4G89TQA57:;Z
  442. M)F3NF&4FH$=DCI&YI&II6.Z6+U]OR?/Q>9V5T[1EB5?1)0/Y-1J.5F 7TBFH
  443. M&O[C\H=#:GT#5>$3'9YT3F+&]SH&FB+ D.AH+DNQ()H47YI[(]*UUD!*/"@ 
  444. M$#A"<GG0)9CI*+9[U&6S9_K5F'UF>ZGM88,'5EH6X- RN(>?$2&@?"+7NC=J
  445. MII!2X)V)\@E\[1O@9B@:?'02""%I+AA%XN-6*JE&P Y*IV55#S/F*;A9[EZ7
  446. M&EEX&1J%/YGSIKUE?AD(N&==(%^;I@))PI5[QE8<B28MB-VFC[,<CI5]G7X%
  447. MBSUNW)R&Y==)5^QE8%E%8H.JD>&AH/09:L;0T?3@!U[<<4D'1$?4)+>U1NJ3
  448. MK"0W^48%D<2<,@<B;EX'92VI1 Z2"6<D.32%3^-3^70^98<@0 V 9D:&]-."
  449. MF'KYD5IDP7E)7D]PY,;Y9QF4LR0BJ40>6QMC^TA%KH7S9"G92Z:-_B7OAW(.
  450. MG%S4/FEPM@ WP)=E4P65DMA0&;TUG*"D#(5P=B&U7R%7<PZ=*:?..7*^41 G
  451. M#J5P+ITL5-,I<G:1KV3$N4>"3WJ&/T<^%1T7YY&8S(  T=87>7*RE$0G/]ES
  452. MMIQEY!.I3'Z4&Z49Z4LNG#8GVFEU;I-/9PO@'YF<O)_'B71RF5:FWYEV[IPE
  453. MYR+986F:LN,>PQ.!$*TF*[AFU#AZAKD99RQI2E@[:'8AA6G7,/9J9B70H-:'
  454. ML0"#?N+Q9T"NE1M8 F!I I9; $W@'WV1)&2&9UJJGKBFG;E"=E.6Y_]AS)V7
  455. M,"0$6$U-2,X@=&'P@!!1%7 DG]!)9AJA*" 4FV*G<AAGM'*-8J28IYEIK2=N
  456. M^7K* #A [%E=JFE:523&(JB+51<<0'I1@!)>!X@7J@IO )4E\<R8S68 &> -
  457. MD)'&FL&7=)X(X!X(9'X*BJ<2IAIE'X[GT %=O$=S2'S$,-X:C*=R.?TXF\4@
  458. M_FF>-![P$9KB\#2%GB?"UW?VAUG4X)EW%I[1%>B)PXF>%MA.N3&>G@RDZ@E+
  459. MII:AYO19?;:6UV?M&6_&@3.>:K3Z31LA1DX$?+I:< #Q21O  8\C'>#/!6Z4
  460. MXPL*&]"@/H#*.#)NC';5E$8(@I\FWP4($ITBYB<QH57-F ?9E!9]IIJZY719
  461. M9Y:@/R>V*5L)GZ6A<%"M+7?,90O(2RF%^N>)DI$\&$?ADKA9&J !#MO#@,:?
  462. MI]^26$2)'1\?!XD_EED?$[.7!JA9>*<;E3EM3J@DO"DF2:!=))Z53@Y@VYX0
  463. MVJA-7F#/I! ?#6733R,E':@!/4 :0-JH ?,EY*0&^$Y2VKHX'@E/@*@2J09D
  464. M3Q99EQ;UF:$!8"?:07VBUASV^8(>:L)!9^:$JI\_GROJ8I6A B0M* * H6*H
  465. M+7,D.(7>4@IX>9*BMBBTV=E9> D3U46CN &-TU!P!HP!+ #Z=!A!!7; ZZB,
  466. MLDO BG.IC-H!J:?HE&$U1\\1>W6-9J/9:&TU!-!*X!06ZGTY:0O@=W<H30?3
  467. MZ%Z5N45W]IWV&=U)EK;H/)-!7!"TUHO!R8B6%PU]-UJN8>9HG)&/W7[C42V'
  468. MC&9P#HW08Z@U:M.7+@?%(3- "15WWT%4%)FOM3.M 2@1KA413421@[R4S$%G
  469. M\ASBT5>B ,/FG-8TK6$A0$#*>GQ2MN&OIAD*:^^:_;2NH4L-V[!8I(5HFDT-
  470. M&JEY2ZRH*4?2B7W$Z-I1&2: ?5+]EJJ1BR>BN0BD<8;D7Z'X&;)TR:=V2!J>
  471. MFS9BP)0:ZHI7HAVR0_@\O4_RHQ6@/DJ$NK)$*!$H04W ^]0^@(%9FOO,*Q6!
  472. M1N"5<@; #V00JPP_'8? <A(0+&]I7KH8S 'A"EG$!1A#Y0$)0BR\ &>  L"7
  473. M/J5_Z0L0F,(EA*EA^@) E,]';/0"2*:%*5\*F=8)&&6K0YDZII?I*T,6]:4N
  474. M46-JF1:/S\=D6H*(IB] 9FJ:2@>-J5[JFKZFL&ELBA!LI6!.P2*;1@1@Z>LC
  475. MEHH$9*E(, .P!/%*%.&LM 1K*4G0KMRF74%<VJ_,I0!+75K\F!''#W(JG48$
  476. MA^DGIX4,8TI8=7J6@7*.SS'$EZ( ^ SQU 6H %P >!H&M !Z0!#0 F@!7P ,
  477. MT +D 'S3>9J>KJ?MZ7LZGG(!3N-O0P?<IRI >+J?AC8O  K !61NJ&GZ\0*X
  478. M *AI#S#:M#J<%6KZ*1VHJ.D7 "6D%%1 ,E29]D0B4D^$FGH!& L0QE*AIM./
  479. MA]I-@:@=:KVXH=:+*.H+\!%=J%[ C::B;JAF6H<*,+*HM,%'E!DYIE[ %J">
  480. M:@%=@(AJ AQ#+P"'6MJ0 *Z.A.0%C !%*E_:,OJG?)-^>I^"IU[ #G"?YJ?B
  481. MJ0JP [P  ^H$F8=<J1*2'\.DJ@"]EW\JI3HL+X"7ZJ2"J2Q)>2JF=@'XZ0N@
  482. M7"A/P-: "J3.6BZ "N#'U*D[P)=*I/*E>>J92J262G-J%%*G^C%D*J$* B@7
  483. MJ.FLQ:1^J8AJ$W+B0"$M"!("D*$ <^H18J?R 'BJGDJF]JE5ZI_*I0)CI=RE
  484. M6JCR #T1HGJAPB"+ZIG:J XAC^H1<H4!J8YJ$?+N7&%P*NRVJ;X @*J1^J4:
  485. M(ZEJE;H%R*<[ZA<0GZ*GP:I["I_VIV?J#D"DPCC3:;/JK,*F.T3MH#($ 2$#
  486. ME?"L2@1P 0P0^^BFK,^ZTIO.!+//#!"<2A$TP5KJ$60%7>FU&A$HI_X*74I&
  487. M/*<#2W2JKJJKPU"]6AH0%VK '%'][ 9XQ,>B_?01=XKW4RBT3.$/(F&9E3^,
  488. M"OJCF4T2[,\ED;/D!YN$>.9)K!5 B_TCM-!FV!HJP6:,&*R$;_/_-"VR!-0R
  489. M .$2ZT35@@#E)G>?Q,.U/$#)1 3$3(PMSX28($V<"=;$VK(!;1-OBP=T)^0)
  490. M(!#=,LHH%"00HI"WL!,HT#!"*:Q ],2FX *=/8:+#)2XL JN JTB*S@N>@_0
  491. MR@-9+@]%\[%A^&:<"Z-$01!!]DM'@029+N$"ZL($F11.4$K1NMQ!V$OH@"]4
  492. M07/0%=2]W!0Y11?$NWQ!/H7%( 8)%<.++E0'I4')2U/Q,K1!B(7S @=-+W-0
  493. M]1(TL*U>102C!XT5MDL?%+Y\"X(06^%6&$)C R(T5[0OQ<1=X03 #?$+7P$)
  494. M 1:BRR2DOT05_$OAD DI (Y%)R19%#"AT&4Q"FT.I=!G@0H],*K0Z< *'0$5
  495. MS"NT6L1"',QKX<'80G8K+B0\X!:ZA5S46Z@POX6]ZKRZ!GKIZ(./YA?SJEN0
  496. MK6ZK=$&W.I:^/B+!1V #G*5_@7!J$Z@^NH\-(*ZFJ]5K0\"N,J=<P1AQ&<"K
  497. M=ZF\FKXVJ\O/\_J\0C\72S>UKU($'HL>,1QL/R.+P"H=$*Q/C<%*_BPJ($?,
  498. MDO[0+)1$?=#^/*SPCUCC27 _8T/%>I!("$-+QFJT;*Q(2Y#RL:YF(NN,0  M
  499. M"K#! =1+H*Q:6P-D3'@M+>LR(;8X$TR)V3*S4A,8T#6!:MRLC4<'1")\0.'$
  500. M(O*S[D""1 E$PC8*12M.LHG,$RU0"\.TQD#^Q RDN$2MC N.QCU4K4!LY4(B
  501. M7"Y:*[\1!/T9%"S8*@F1+MP"V;H$F0MH*TJA4C"N4]#;&E/$K0'#W*H%,0IU
  502. MJ^]PM_HN81#&P+<2%<3+SX &*16!Z_("512N;U!@% ?-+HJK'30TX$&.:UBQ
  503. M!T6N9L4?A%:0+XR"Y5H(P16:*_O2NKPOGVM>$3D\0O0+Z6H$\0V4T-^POR@6
  504. M_LLF5!^XKI\0P!"[8@Z:Q0)C"H$.MZNW ,'HKA,,[^H*73"JQ<N@P< &P6LM
  505. MQ#L4KR),+D3")*_7W?+Z/=BO]FHQ= QE:IQ:,Q0-34-%@ ]1PQQ-UU SN\SR
  506. M)391M9-KN C3 B>YQP!H\@5LD,V:)=LL&M#-TF5/J0K@R%5_*M@$F5/N15O 
  507. MB;!P''TIP'U%!?Y9K9SN5_/!!G[ . M@E+/GK+U6_;6,#$T(N<]"'X(3(I;.
  508. MKK-J%4&K@O%*[:Q2B13%L[#$/.O(V;,1%3Z+1NFS#-M".XTQ9+*6",8L65L/
  509. M;1L8H9!W9$B!$,Z.8 ^M Q9'9"7^[+  T-9TW^RS^"NLM#'M&3#3PF'I+ 'W
  510. M25V([BS$!L_*L[:<3XO1WG[-Y(7H]!5YE6,_RYB0LV2"\M T#K0BX]-R(5:.
  511. M31DAUM,^?50M&,+0>) 9"% KT0ZU%6U1^_0=M20F_:340H17XU9[B8&TVN%(
  512. M.W1=M29M!4&]I;1DP$J+/EVU+JV<DI6 GAF$34M"Y+0 K3^W= BVBPF<\<]&
  513. MM34=V07.(AX5I%LK[4FE<-&09X&":*?42HNQ$+91K3]'S[X'G"TWFY,YDH/4
  514. M>[ ^L6B8;<GD+?D!%:1J"]D>D*5-O ;7RK4$TVG+[]!,(IYTL'"< 2Z".6?K
  515. MH0"V+4^F) 6WZ<=NV]M:!\J%O9,J7$S>4E/F@ZX(D5I3-H7<H-KCW8@<F0!C
  516. ME'0+D$6.R(+-:-VJ!]FMX'0^_G/;8WBK.JF.V2/Z%+^)1<K;BK#26J#![=0$
  517. M&?$E5^G=!QGYM9&GQ7BN!;8!R&#[U"ZVW*QA.U%.:0!:8EN6 +CF;&-;T_:W
  518. M*RV!1]/F-#P@UU$QK$SO0238[; .I2%6(WXQ8/27.SG]@)<#DH;[?H&XH,A$
  519. MV4WQ?^&EB/O]W5\I[H";,:H2H.T MB)RBWU FXB4OHE*J74HL]6 ,1YE"T**
  520. M;2F4FD@Q]KCZ[6J(V0IU0QUL.]4Q<$AN.MO;47>9;705VIJSGJTC!]K^MS(M
  521. M8PN'^;0=[H7(A@VY"Y5I&Z^EMETNU_=_4'Y:G&G[Y#X%*,":6XFYMOQLD?M@
  522. M^+;>DISKA<FV#%/)-%#%MQE@"6+<H@&^[808W-J$!:T85MP.";PMH(O<7@>+
  523. MUJTGJ35EX6)-IV^53&)MB_ %0$N4DI!K*TZUM&V?1-?6N(B'=AM^8&%58JC8
  524. MJJEAL$%3YN;JN".8FWM*M4E?@)N;%KFZF*YG)JO!1:NNGDO2NKFUKEU;@$ E
  525. M*ZV=VZK%MXA'3<?7.I#*8 (WDY&"G,E==NL:1K%NJR@'R+<4!'YK>[!O/%JI
  526. MBY7>&OQMC&+@:K.=K3=;00BV..WB)K'!B:QNC?@08KOUK=:FSHIA.]Q?E2I,
  527. MN0'M9UOHFF&I+3R*>+"[VF[*^N[*:-'=G@NBU;HH+;"[[YJ[<T!*Z 908,0N
  528. MJ/O2YK?]KM;6[;)%]*X_E]2-NPQNF7CNYK@>[4/8[J)M1R[=Q?+8:KB:&V:,
  529. M3$D@1,4[C5FY]ZZ;!^]:*2G4^A0<97.*E*ABVGIH-N]$>=IZ?#EOS'O7[6@S
  530. MH=L&J$EJ?L#'6['!N3_=RL3P/ %F /ZF2,VVMI[,*Z?AMI_BF:B4_F\J'>WT
  531. M20F[<2*OQ#@)AS,O%*:D7;?K@>[$.V&BPF&[6*.E>M86&W8U0KHT+ZE[XRJ\
  532. M6*_8^^J&M7):6B2G7;IAK1L0]A:+:='?RYD,MW+:H3LL'+>-;FK7W I.=1N_
  533. MF_$9O3.8Q_;3;FA!+7F \"J\&]*.]@4@AU9*R2L'7(U<;]U;+*( 4.^>._5*
  534. M:I#OG<NBE;XD[< KJ3F^&Z^I"Z2E: $O2;NAU;JIKG@[J=9>CA2_1_KFN;7O
  535. M7)ON4;U-6;K7.-U[E&ZZY\Y.,Y=N75OPI@_!KIM(]ZH @N\&4==)!U(OS7O]
  536. M,C0_+X.V_>Z\Z8.-&_MNNT :L2O.7KXO*8ET^[JT.P%M"NKT!?-K09";9J]8
  537. M!&_*O9X$-("Q-:X.I[Q/%9'_'J?QKT.PO@H_S>F[RA48/RB!;1H (Z<O@%&6
  538. M$RVKCFF=VL]P 7Z FKJCRJ?&JK!*GJ8 7T"=&JX(!*G"%3 4X)MGP$GHROPE
  539. M^T6D8?!(/%EJ 1C^51?>Z8%*_7X!:JH7< &CIQDPWW0#ZP$Y\ ;< 1M#2L^[
  540. M, (#&*D"3"('R"2_"(,FC/PV]HZ]L:!Y"9!+D@../!<Q<#\CZ=2IQD<Z=G=\
  541. MP&I "#P$#PN,UKJQ@J8*0.I3-#]0%\.$/U$@)*D-\$?SH#JF'PVE*B%1JGSI
  542. @GUH%OP L0&NZ ._!?' ?[ ?_P8!P("P(#\*$<"$\OP+S
  543.  
  544. end
  545.